/*
指针
声明方式: var pointerName *type
运算符就是简单的 & 和 * 一个取地址、一个解析地址

指针的作用就是将数据量很大的数据在进行传输时
只传输该数据的存储地址，而不需要传输相应的数据
 */
package main

import (
	"fmt"
)

func main() {
	var a int = 10
	var ip *int /* 声明指针变量*/
	var ptr *int //指针变量不能赋值非指针数据

	ip = &a /* 指针变量的存储地址*/
	ptr = &a

	fmt.Printf("a变量的指针地址： %x\n" ,&a)  //输出16进制
	fmt.Printf("ip变量储存的指针地址: %x\n",ip) // %x表示16进制
	fmt.Printf("*ip 变量的值: %d\n",*ip) //通过地址获取相应的值

	if(ptr != nil){
		fmt.Printf("*ptr 非空的值: %d\n", *ptr) // %d表示输出int类型的数字
	}else{
		fmt.Printf("ptr 的值: %x\n", ptr)//获取指针所指向地址时，为空时会报错
	}


}
